#pragma once

#include <string>

namespace cal
{
namespace tok
{

enum TokenKind : unsigned short {
#define TOK(X) X,
#include "TokenKinds.def"
    NUM_TOKENS
};

}   // namespace tok

std::string    get_token_name(tok::TokenKind kind);
std::string    get_keyword_spelling(tok::TokenKind kind);
std::string    get_keyword_syntax(tok::TokenKind kind);
std::string    get_keyword_syntax(const std::string& keyword);
tok::TokenKind get_keyword_tokenkind(const std::string& keyword);
char           get_operator_spelling(tok::TokenKind kind);
std::string    get_operator_spelling_str(tok::TokenKind kind);
tok::TokenKind get_opeartor_tokenkind(char c);

}   // namespace cal
